前言
最近项目中经常或出现需要对查询数据的Date时间字段进行转String格式化,原有项目中是对每个查询的实体类中都添加了一个方法,专门用来进行时间格式化,感觉每个类都加,代码维护性不高不说,关键还烦,所以写了个通过字段注解的方式对需要做转译的字段进行转译操作。 主要运用的方法是java的反射,有关java反射的一些操作,可以看下我的另一篇博客java的反射特性
jar包依赖
这里引用了apach-commons-lang3,当然也可以使用其他方法进行操作,此处只是为了图方便
org.apache.commons
commons-lang3
3.9
定义自定义注解
package com.dream.common;
import java.lang.annotation.*;
/**
* 字段转译
* @author YML
* @date 2019/10/22 14:12
*/
@Retention(RetentionPolicy.RUNTIME) //注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target({
ElementType.FIELD}) //定义注解的作用目标作用范围字段、枚举的常量/方法
@Inherited //允许子类继承父类
@Documented //说明该注解将被包含在javadoc中
public @interface FieldTrans {
enum FieldTransType{
/** 年月日时间格式 */
DATE,
/** 年月日时分秒时间格式 */
DATETIME,
/** 根据枚举值转译 */
ENUM
}
/** 转译类型 */
public FieldTransType type();
/** 转译到哪个字段,默认注解字段后面+Ch */
public String transTo() default "";
/** 转译的枚举值 */
public Class enumClass() default Object.class;
}
定义工具类
package com.dream.util;
import com.dream.common.FieldTrans;
import org.apache.commons.lang3.ArrayUtils;
|